Video generation systems within computer systems generally use a large amount of memory and a large amount of memory bandwidth. At the very minimum, a video generation system requires a frame buffer that stores a digital representation of the image currently being rendered on the video display screen. The CPU of the computer system must access the frame buffer to change the displayed image in response to user inputs and the execution of application programs. Simultaneously, the entire frame buffer is read by a video generation system at a rate of 30 to 70 times per second to render an image of the frame buffer on a video display screen. The combined accesses of the CPU updating the image to display and the video generation system reading the image out in order to render a video output signal use a significant amount of memory bandwidth.
In addition to those minimum requirements, there are other video functions of a computer system that may consume processing cycles, memory, and memory bandwidth. For example, three-dimensional (3D) graphics, full-motion video, and graphical overlays may all need to be handled by the video memory system and the video display adapter.
Many computer systems now include special three-dimensional (3D) graphics rendering systems that read information from 3D models and render a two-dimensional (2D) representation in the frame buffer that must be displayed. The reading of the models and rendering of a two-dimensional representation may consume a very large amount of memory bandwidth. Thus, computer system systems that will do a significant amount of 3D rendering generally have separate specialized 3D rendering systems that use a separate 3D memory area. Some computer systems use ‘double-buffering’ wherein two frame buffers are used. The CPU generates one image in a frame buffer that is not being displayed and when the image is complete, the system switches from a frame buffer currently being displayed to the frame buffer that was just completed.
Full-motion video generation systems decode and display of full-motion video. In the computer context, full-motion video is the rendering of clips of television programming or film on a computer screen for the user. (This document will use the term ‘full-motion video’ when referring to such television or film clips to distinguish such full-motion video from the reading of normal desktop graphics for generation of a video signal for display on a video display monitor.) Full-motion video is generally represented in digital form as computer files containing encoded video or an encoded digital video stream received from an external source. To display such full-motion video, the computer system must decode the full-motion video and then merge the full-motion video with video data in the computer systems main frame buffer. Thus, the generation of full-motion video is a memory size and memory bandwidth intensive task. However, the display of full-motion video is a standard feature that is now expected in all modern computer systems.
In a full personal computer system, there is ample CPU processing power, memory, and memory bandwidth in order to perform all of the needed functions for rendering a complex composite video display signal. For example, the CPU may decode full-motion video stream, the CPU may render a desktop display screen in a frame buffer, and a video display adapter may then read the decoded full-motion video, combine the decoded full-motion video with the desktop display screen, and render a composite video display signal.
However, in small computer systems wherein the computing resources are much more limited the task of generating a video display can be much more difficult. For example, mobile telephones, handheld computer systems, netbooks, and terminal systems will have much less CPU, memory, and video display adapter resources than a typical personal computer system. Thus, in a small computer the task of rendering a composite video display can be very difficult. It would therefore be desirable to develop methods of improving the display systems for small computer systems.